python语言程序设计实验教程答案实验三_20182204 实验三《Python程序设计》实验报告...

20182204 《Python程序设计》实验三报告

课程:《Python程序设计》

班级:1822

姓名:20182204zwp

学号:20182204

实验教师:王志强老师

实验日期:2020年5月16日

必修/选修: 公选课

2. 实验内容及结果

(一)实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

(二)实验要求

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

(2)要求包含文件的基本操作,例如打开和读写操作。

(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

(4)程序代码托管到码云。

server端代码

importsocketimportstructimportbase64

FILEINFO_SIZE=struct.calcsize('128s32sI8s')

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',8001))

s.listen(5)

conn,address=s.accept()print("文件接收开始")

with open('file', 'ab') as f:#接收数据

data = conn.recv(1024)if data == b'quit':

breakpoint()#写入文件

f.write(data)#接受完成标志

conn.send('success'.encode())print("文件接收完成")#关闭连接

print("加密后的内容:")

with open('file', 'r',encoding='UTF-8') as f:

based_data1=f.readline().encode()print(based_data1)

plain_data1=base64.b64decode(based_data1)

open("file", "w").close()

with open('file', 'wb') as f:

f.write(plain_data1)print("解密后的内容:")

with open('file', 'r',encoding='UTF-8') as f:print(f.readline())

with open("file",'rb') as f:for i inf:

conn.send(i)

data=conn.recv(1024)if data!= b'success':breakconn.send('quit'.encode())

s.close()

client端代码

importsocketimportbase64

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(('127.0.0.1', 8001))print("加密后的内容:")

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'r',encoding='UTF-8') as f:

data=f.readline().encode()

based_data1=base64.b64encode(data)print(based_data1)

open(r"C:\Users\86138\Desktop\1822\20182204.txt", "w").close()

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'wb') as f:

f.write(based_data1)

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'rb') as f:for i inf:

s.send(i)

data= s.recv(1024)if data != b'success':breaks.send('quit'.encode())print("解密后的内容:")

file= s.recv(1024)

with open('file', 'r', encoding='UTF-8') as f:print(f.readline())

f.close()

实验结果截图

3. 实验过程中遇到的问题和解决过程

问题1:遇到了编码的问题,此处应该是str类型不应该是byte类型

问题1解决方案:百度后得知,用decode完美解决

问题2:加密解密问题

问题2解决方案:王老师里面发了连接,我挑了一个比较简单的base加解密算法,完美解决

感悟

本次实验令我受益良多,更好的理解了服务器与客户端之间的连接传输,更灵活的应用了加解密算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值